package ui.viewModel.systemManagement;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.widget.Toast;

import ui.viewModel.ModelErrorInfo;
import ui.viewModel.ViewModel;

public class RegisterViewModel extends ViewModel {

	// 声明了注册界面中用到的变量
	private String userName, passWord, checkedPassWord, mail;

	// 获取用户名称
	public String getUserName() {
		return userName;
	}

	// 设置用户姓名
	public void setUserName(String userName) {
		this.userName = userName;
	}

	// 获取用户密码
	public String getPassWord() {
		return passWord;
	}

	// 设置密码
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}

	// 获取确认密码
	public String getCheckedPassWord() {
		return checkedPassWord;
	}

	// 设置确认密码
	public void setCheckedPassWord(String checkedPassWord) {
		this.checkedPassWord = checkedPassWord;
	}

	// 获取用户注册邮箱
	public String getMail() {
		return mail;
	}

	// 设置用户注册邮箱
	public void setMail(String mail) {
		this.mail = mail;
	}

	// 获取后一天的运动数据，并显示出来
	@Override
	public List<ModelErrorInfo> verifyModel() {
		// TODO Auto-generated method stub
		List<ModelErrorInfo> errs = null;
		
		//对注册的用户名称进行验证
		if (userName == null) {
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(userName);
			err.setErrMsg("用户名不能为空");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		if (userName.length() > 8) {
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(userName);
			err.setErrMsg("用户名长度不能大于8");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		if (userName.length() < 3) {
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(userName);
			err.setErrMsg("用户名长度不能小于3");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		
		//验证注册邮箱不能为空
		if(mail == null){
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(mail);
			err.setErrMsg("邮箱不能为空");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		
		//正则表达式验证邮箱合法性
		String regEmail = "([//w[_-][//.]]+@+[//w[_-]]+//.+[A-Za-z]{2,3})|([//"
            + "w[_-][//.]]+@+[//w[_-]]+//.+[//w[_-]]+//.+[A-Za-z]{2,3})|"
            + "([//w[_-][//.]]+@+[//w[_-]]+//.+[//w[_-]]+//.+[//w[_-]]+"
            + "//.+[A-Za-z]{2,3})";
		
		//验证密码的合法性
		Pattern emailPattern = Pattern.compile(regEmail);
		Matcher emailMatcher = emailPattern.matcher(mail);
		if(!emailMatcher.matches()){
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(mail);
			err.setErrMsg("邮箱格式非法！");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		
		//验证密码长度不能小于3位，不能大于16位
		if(passWord.length() < 3){
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(passWord);
			err.setErrMsg("密码长度不能小于3");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		
		if(passWord.length() > 16){
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(passWord);
			err.setErrMsg("用户名长度不能大于16");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		
		//验证两次密码输入是否一致
		if (passWord != checkedPassWord) {
			ModelErrorInfo err = new ModelErrorInfo();
			err.setErrAttName(checkedPassWord);
			err.setErrMsg("两次输入的密码不同!");
			if (errs == null) {
				errs = new ArrayList<ModelErrorInfo>();
			}
			errs.add(err);
		}
		return errs;
	}

}
